DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Desenvolvimento Multicamadas em Csharp (C#(csharp)) - Parte 2 - Exemplo prático [Camada Intermediária]

A camada intermediária implementa a lógica de negócio e a lógica do controlador. Essa camada atua como intermediário entre os dados da camada de apresentação e os clientes do aplicativo. A lógica do controlador processa os pedidos do cliente e recupera do banco de dados.

v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} st1\:*{behavior:url(#ieooui) }

Desenvolvendo uma aplicação Multicamadas para Windows em C#

Parte 2 )Camada Intermediária: Lógica do Controlador

 

Introdução

 
Este artigo é o segundo de uma série de sete artigos que apresentam um exemplo prático e simples abordando o desenvolvimento em camadas em C#, sabemos que a programação orientada a objetos (POO) possibilita uma abordagem simples para a utilização de dados usando objetos.
 
No artigo anterior foi apresentado um cenário para o desenvolvimento da aplicação e criado o Banco de Dados com as respectivas tabelas e o mapeamento Entidade Relacionamento entre elas.
 
Neste artigo será apresentada a classes da camada “2 – Camada Intermediaria” que representa a lógica do controlador, classe essa que faz a interface entre a lógica de negócio e os dados no banco de dados.


Figura
1 - Observe Camada 2.1
 
 
Os métodos da lógica do controlador devem assegurar a confiabilidade dos dados antes que o servidor de Banco de Dados atualize ou exiba as informações ao cliente do aplicativo (camada de apresentação).
 
Sabe-se que de acordo com as necessidades atuais das empresas e alterações constantes na legislação e evidentemente nos aplicativos, o modelo de desenvolvimento em várias camadas, com a utilização de classes com finalidades específicas, facilitam a atualização das aplicações e também permitem o reuso do código.
 

2 – Camada Intermediaria

 
Vamos começar organizando o projeto proposto. Para isso abra inicie um novo projeto em Visual C# - Windows Application, veja Figura 2 - New Project. Dê o nome para esse projeto de Seguros_OO e clique em OK.


Figura 2 - New Project


Para que possa ser organizado e visualizado o código nas diferentes camadas, adicione a este projeto duas novas pastas chamadas: “Camada Intermediaria” e “Camada Apresentacao”. Expanda a pasta “Camada Intermediaria” e crie duas novas pastas chamadas respectivamente Logica  Controlador e Logica  Negocios.
 
Para criar, clique com o botão direito do mouse sobre a solução, selecione Add New Folder. Dê os nomes conforme acima, ao final você terá:



Figura 3 - Pastas

Vamos adicionar a primeira classe, que será responsável pelo controle dos dados. Essa classe fará parte da Lógica do Controlador.
Chamaremos essa classe de “clsDados.vb”.
 
 
1) Clique com o botão direito sobre “Logica Controlador” e selecione Add .. Class .. Dê o nome de “clsDados.cs” para essa classe. Conforme figura.



Figura 4 - Classe clsDados.cs

Vamos ao código da Classe de Dados, “clsDados.cs”. Classe genérica que é utilizada para fazer a interface entre as classes contidas na lógica de negócios e a camada de dados. Nela pode-se realizar as operações básicas de banco de dados, como: inclusão, alteração, consulta e exclusão.
 
Revisando: A orientação a objetos usa classes para encapsular variáveis de instância (dados) e métodos (comportamentos).
 

Estrutura da classe: clsDados




2) Digitar o código abaixo na classe “clsDados.cs”.Dê um duplo clique sobre o nome do arquivo e digite. Se preferir, é claro, copie.

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
 
namespace Seguros_OO.Camada_Intermediaria.Logica_Negocios
{
    class clsDados
    {
        // Adapte a string de acordo com sua conexão.
        string conexao = "Data Source=(local);Initial Catalog=seguros;Integrated Security=True";
       
        //Classe para Abrir o Banco de Dados
        private SqlConnection AbrirBanco()
        {
            SqlConnection cn = new SqlConnection(conexao);
            cn.Open();
            return cn;
        }
 
        //Classe para Fechar o Banco de Dados
        public void FecharBanco(SqlConnection cn)
        {
            if (cn.State==ConnectionState.Open)
                cn.Close();
        }
        //Classe para execução de comando
        public void ExecutarComando(string strQuery)
        {
            SqlConnection cn = new SqlConnection();
            try
            {
                cn = AbrirBanco();
                SqlCommand cmd = new SqlCommand();
                cmd.CommandText = strQuery.ToString();
                cmd.CommandType = CommandType.Text;
                cmd.Connection = cn;
                cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                FecharBanco(cn);
            }
        }
        //Classe que retorna um objeto DataSet
        public DataSet RetornarDataSet(string strQuery)
        {
            SqlConnection cn = new SqlConnection();
            try
            {
                cn = AbrirBanco();
                SqlCommand cmd = new SqlCommand();
                cmd.CommandText = strQuery.ToString();
                cmd.CommandType = CommandType.Text;
                cmd.Connection = cn;
                cmd.ExecuteNonQuery();
                /*  Declarado um dataadapter e um dataset
                    passar o comando para o da (SqlDataAdapter) e
                    carregar o dataset com resultado da busca */
                SqlDataAdapter da = new SqlDataAdapter();
                DataSet ds = new DataSet();
                da.SelectCommand= cmd;
                da.Fill(ds);
                return ds;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                FecharBanco(cn);
            }
        }
        //Classe para retornar um DataReader()
        public SqlDataReader  RetornarDataReader(string strQuery)
        {
            SqlConnection cn = new SqlConnection();
            try
            {
                cn = AbrirBanco();
                SqlCommand cmd = new SqlCommand();
                cmd.CommandText = strQuery.ToString();
                cmd.CommandType = CommandType.Text;
                cmd.Connection = cn;
                return cmd.ExecuteReader();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                FecharBanco(cn);
            }
        }
 
        //Classe para retornar um Id Numérico
        public int RetornarIdNumerico(string strQuery)
        {
            SqlConnection cn = new SqlConnection();
            try
            {
                cn = AbrirBanco();
                SqlCommand cmd = new SqlCommand();
                cmd.CommandText = strQuery.ToString();
                cmd.CommandType = CommandType.Text;
                cmd.Connection = cn;
                SqlDataReader dr = cmd.ExecuteReader();
                int codigo;
                if (dr.Read())
                    codigo = Convert.ToInt16(dr[0]) + 1;
                else
                    codigo = 1;
                return codigo;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                FecharBanco(cn);
            }
        }
    }
}
 

Conclusão

 
Nesse artigo foi apresentado a classe da camada “2 – Camada Intermediaria” que representa a lógica do controlador, classe essa que faz a interface entre a lógica de negócio e os dados no banco de dados. No próximo artigo será apresentado as classes que compõem a lógica de negócio, classes que possuem uma interface com a apresentada agora.
 
Qualquer dúvida quanto a esse artigo entre em contato pelo e-mail: professormoraes_arroba_gmail.com.
 
Um grande abraço e até o próximo artigo.
 
 
 
 





    2 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Ricardo
Etou seguindo os passos do exemplo mais esta dando erro na conecção com o Banco.
"An error has occurred while establishing a connection to the server.  When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)". Ja verifiquie acesso ao banco, senha, e criei o banco com e scritp que esta no passo 01.
[há +1 ano] - Responder

 

Ramon Augusto Marinho
Caro Professor,
Primeiro venho parabeniza-lo pelo trabalho.
Segundo gostaria de esclarecer um duvida neste segundo artigo.
Quando o Sr. manda criar uma classe de dados e existe o código da mesma, percebi que:
 
O Sr. diz: " vamos adicionar a primeira classe, que será responsável pelo controle dos dados. essa classe fará parte da lógica do controlador. chamaremos essa classe de “clsdados.vb”.

 1) clique com o botão direito sobre “logica controlador” e selecione add .. class .. dê o nome de “clsdados.cs” para essa classe. conforme figura. "

Porém mais abaixo no código o Sr. informa o seguinte: " namespace seguros_oo.camada_intermediaria.logica_negocios 
 
Sendo assim gostaria de saber se a classe vai ser criada em Lógica do Controlodor ou Lógica de Negocio.
 
Obrigado!
 
Alexsander Marinho
 
Ps.: Me desculpe algo, pois sou novoto em programação.
[há +1 ano] - Responder

 



[Este post ainda não foi associado a uma sequência]
Publicidade
Autor
Marcos Roberto De Moraes

Mestre em Educação pela UNISAL.
Especialista em Administração de Sistemas de Informação pela Universidade Federal de Lavras-MG (UFLA).
Licenciado pleno em informática pela Universidade Metodista de Piracicaba (UNIMEP).
Graduado em Tecnologia em Processamento de Dados pela Unipinhal.
...


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
10   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03